package br.com.iswe.gwt.ui.client.service;

import java.util.List;

import br.com.iswe.core.entidades.gwt.BeanMap;
import br.com.iswe.gwt.ui.client.ListBoxInfo;
import br.com.iswe.gwt.ui.client.QueryInfo;
import br.com.iswe.gwt.ui.client.RequestInfo;
import br.com.iswe.gwt.ui.client.SessionInfo;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface BeanMapServiceAsync extends ManyToManyClientAsyncContract<BeanMap> {

	void consultar(List<ListBoxInfo> listaRequest, RequestInfo requestInfo, AsyncCallback<List<ListBoxInfo>> callback);
	
	void consultar(String controllerName, BeanMap filtro, QueryInfo pageInfo, AsyncCallback<List<BeanMap>> callback);
	
	void detalhar(String controllerName, BeanMap filtro, RequestInfo requestInfo, AsyncCallback<BeanMap> callback);
	
	void salvar(String controllerName, BeanMap bean, RequestInfo requestInfo, AsyncCallback<BeanMap> callback);
	
	void deletar(String controllerName, BeanMap bean, RequestInfo requestInfo, AsyncCallback<BeanMap> callback);
	void deletar(String controllerName, List<BeanMap> itens, RequestInfo requestInfo, AsyncCallback<BeanMap> callback);
	
	void getSessionInfo(String controllerName, AsyncCallback<SessionInfo> callback);
	
	void executeMap(String controllerName, String methodName, BeanMap BeanMapBean, RequestInfo requestInfo, AsyncCallback<BeanMap> callback);
	void executeList(String controllerName, String methodName, BeanMap BeanMapBean, RequestInfo requestInfo, AsyncCallback<List<BeanMap>> callback);

	void efetuarLogin(String controllerName, BeanMap bean, AsyncCallback<SessionInfo> callback);
	void efetuarLogout(String controllerName, AsyncCallback<Void> callback);
}
